$(function () {
    //定义全局变量
    window.pageNum = 1;
    window.pageSize = 5;
    window.keyword = "";
    window.pages=0;
    //调用方法
    showPage();
});

function showPage() {
    $.ajax({
        url: "/role/search/by/keyword",
        data: {
            "pageNum": window.pageNum,
            "pageSize": window.pageSize,
            "keyword": window.keyword,
        },
        type: "post",
        dataType: "json",
        success: function (res) {
            if (res.msg == "成功") {
                window.pages=res.data.pages;
                //解析数据
                $("#roleTableBody").empty();
                // 获取数据集合
                var list = res.data.list;
                // 判断list是否有效
                if (list == null || list.length == 0) {
                    $("#roleTableBody").append("<tr><td colspan='4' style='text-align:center;'>没有查询到数据！</td></tr>");
                    return;
                }
                for (var i = 0; i < list.length; i++) {
                    var role = list[i];

                    //数据
                    var numberTd = "<td>" + (i + 1) + "</td>";
                    var checkBoxTd = "<td><input class='itemBox' roleid='" + role.id + "' type='checkbox'></td>";
                    var roleNameTd = "<td>" + role.name + "</td>";

                    //按钮
                    var checkBtn = "<button roleId='"+role.id+"' type='button' class='btn btn-success btn-xs checkBtn'><i class=' glyphicon glyphicon-check'></i></button>";
                    var pencilBtn = "<button roleId='"+role.id+"' type='button' class='btn btn-primary btn-xs editBtn'><i class=' glyphicon glyphicon-pencil'></i></button>";
                    var removeBtn = "<button roleId='"+role.id+"' type='button' class='btn btn-danger btn-xs removeBtn'><i class=' glyphicon glyphicon-remove'></i></button>";

                    var btnTd = "<td>" + checkBtn + " " + pencilBtn + " " + removeBtn + "</td>";

                    var tr = "<tr>" + numberTd + checkBoxTd + roleNameTd + btnTd + "</tr>";

                    // 将前面拼好的HTML代码追加到#roleTableBody中
                    $("#roleTableBody").append(tr);
                }
                console.log("111111111")
                //显示分页导航
                initPagination(res.data);
                console.log("2222222222")

            } else {
                layer.msg(res.msg);
            }
        }
    })
}

//声明函数封装导航条初始化操作
function initPagination(pageInfo) {
    console.log(pageInfo)
    // 声明变量存储分页导航条显示时的属性设置
    var paginationProperties = {
        num_edge_entries: 3,        //边缘页数
        num_display_entries: 5,      //主体页数
        callback: pageselectCallback, //回调函数
        items_per_page: window.pageSize,  //每页显示数据数量，就是pageSize
        current_page: (window.pageNum - 1),//当前页页码
        prev_text: "上一页",       //上一页文本
        next_text: "下一页"        //下一页文本
    };
    // 显示分页导航条
    $(".pagination").pagination(pageInfo.total, paginationProperties);
}

// 在每一次点击“上一页”、“下一页”、“页码”时执行这个函数跳转页面
function pageselectCallback(pageIndex, jq) {
    // 将全局变量中的pageNum修改为最新值
    // pageIndex从0开始，pageNum从1开始
    window.pageNum = pageIndex + 1;
    // 调用分页函数重新执行分页
    showPage();
    return false;
}

//关键字查询
$("#searchBtn").click(function () {
    // 在单击响应函数中获取文本框中输入的数据
    var keyword = $.trim($("#keywordInput").val());

    // 验证输入数据是否有效
    if (keyword == null || keyword == "") {
        // 如果无效，提示，停止函数执行
        layer.msg("请输入关键词！");
        return;
    }

    // 如果有效，赋值给window.keyword
    window.keyword = keyword;

    // 调用showPage()重新分页
    showPage();
});

//全选/全不选功能
$("#summaryBox").click(function () {
    // 1.获取当前checkbox的选中状态
    // var currentStatus = this.checked;
    // 2.设置itemBox的选中状态
    $(".itemBox").prop("checked", this.checked);
});

//批量选择删除，附带模态框
$("#batchRemoveBtn").click(function () {
    //没选的情况
    var count=$('.itemBox:checked').length;
    if (count==0){
        layer.msg("请至少选择一条！")
        return
    }
    //手机选中的角色id
    window.roleIdArray=new Array();
    $('.itemBox:checked').each(function () {
        var rid=$(this).attr('roleid')
        window.roleIdArray.push(rid)
    })
    console.log(window.roleIdArray)
    //弹出模态框
    showRemoveConfirmModal()
})
function showRemoveConfirmModal(){
    $('#confirmModal').modal("show")
    //发送ajax
    var requestBody=JSON.stringify(window.roleIdArray)
    $.ajax({
        url:"/role/get/list/by/id/list",
        type:"post",
        data:requestBody,
        contentType:"application/json;charset=UTF-8",
        dataType:"json",
        success:function (res) {
            //清空
            $("#confirmModalTableBody").empty();
            if (res.msg=="成功"){
                var data=res.data
                var str="";
                for (var i=0;i<data.length;i++){
                    str+="<tr>" +
                        "   <th width=30>"+data[i].id+"</th>" +
                        "   <th>"+data[i].name+"</th>" +
                        " </tr>"
                }
                $("#confirmModalTableBody").append(str)
            }else{
                layer.msg(res.msg);
                return null;
            }
        }
    })
}

//标记ok摁钮
//确认删除
$("#confirmModalBtn").click(function () {
    var requestBody=JSON.stringify(window.roleIdArray)
    //发送ajax
    $.ajax({
        url:"/role/batch/remove",
        type:"post",
        data:requestBody,
        contentType:"application/json;charset=UTF-8",
        dataType:"json",
        success:function (res) {
            var result = res.msg;
            if(result == "成功") {
                layer.msg("操作成功！");
                // 如果删除成功，则重新调用分页方法
                showPage();
            }
            if(result == "") {
                layer.msg(res.msg);
            }
            // 不管成功还是失败，都需要关掉模态框
            $("#confirmModal").modal("hide");
        },
        "error":function(res){
            layer.msg(res.msg);
        }
    })
})

$("#roleTableBody").on("click",".removeBtn",function () {
    // 获取当前记录的roleId
    var roleId = $(this).attr("roleId");
    // 存入全局变量数组
    window.roleIdArray = new Array();
    window.roleIdArray.push(roleId);
    // 打开模态框（后续所有操作都和批量删除一样）
    showRemoveConfirmModal();
})

//新增
$("#addBtn").click(function () {
    $("#addModal").modal("show");

})

//确认添加
$("#addModalBtn").click(function () {
    // 1.收集文本框内容
    var roleName = $.trim($("#roleNameInput").val());
    if(roleName == null || roleName == "") {
        layer.msg("请输入有效角色名称！");
        return ;
    }
    $.ajax({
        url:"/role/save/role",
        type:"post",
        data:{
            "roleName":roleName
        },
        dataType:"json",
        success:function (res) {
            var result = res.msg;

            if(result == "成功") {
                layer.msg("操作成功！");
                // 前往最后一页
                window.pageNum = window.pages;
                showPage();
                // 不管成功还是失败，关闭模态框
                $("#addModal").modal("hide");

                // 清理本次在文本框填写的数据
                $("#roleNameInput").val("");
            }else {
                layer.msg(res.msg);
            }
        }
    });
});

//修改
$("#roleTableBody").on("click",".editBtn",function(){

    // 1.获取当前按钮的roleId
    window.roleId = $(this).attr("roleId");

    // 2.获取当前按钮所在行的roleName
    var roleName = $(this).parents("tr").children("td:eq(2)").text();

    // 3.修改模态框中文本框的value值，目的是在显示roleName
    $("#roleNameInputEdit").val(roleName);

    // 4.打开模态框
    $("#editModal").modal("show");
});

$("#editModalBtn").click(function () {
    // 1.获取文本框值
    var roleName = $.trim($("#roleNameInputEdit").val());

    if(roleName == null || roleName == "") {
        layer.msg("请输入有效角色名称！");

        return ;
    }
    $.ajax({
        url:"/role/update/role",
        type:"post",
        data:{
            "id":window.roleId,
            "name":roleName
        },
        dataType:"json",
        success:function (res) {
            var result = res.msg;
            if(result == "成功") {
                layer.msg("操作成功！");
                // 3.操作成功重新分页
                showPage();
            }
            if(result == "失败") {
                layer.msg(res.msg);
            }

            // 4.不管成功还是失败，关闭模态框
            $("#editModal").modal("hide");
        }
    });
});

//绑定修改权限按钮单击事件
$("#roleTableBody").on("click",".checkBtn",function(){

    // 将角色id存入全局变量
    window.roleId = $(this).attr("roleId");

    $("#roleAssignAuthModal").modal("show");
    //初始化ztree
    initWholeTree();
});

//初始化zTree
function initWholeTree(){
    var setting = {
        "data": {
            "simpleData": {
                "enable": true,
                "pIdKey": "categoryId"
            },
            "key": {
                "name": "title"
            }
        },
        "check": {
            "enable": true
        }
    };

    // 2.获取JSON数据
    $.ajax({
        "url": "/assign/get/all/auth",
        "type": "post",
        "dataType": "json",
        success:function (ajaxResult) {
            if(ajaxResult.res == "成功") {
                layer.msg(ajaxResult.msg);
                return ;
            }
            var zNodes = ajaxResult.data;
            // 3.初始化树形结构
            $.fn.zTree.init($("#treeDemo"), setting, zNodes);
            //展开所有节点
            $.fn.zTree.getZTreeObj("treeDemo").expandAll(true);

            //回显已分配权限
            // goBackAuth();
        }
    });
}